package org.lora.util;

import java.util.Collection;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.lora.exception.LoraCoreException;
import org.lora.exception.ParameterIllegalException;

/**
 * <p>
 * Title:ValidateUtil
 * </p>
 * <p>
 * Desription:校验工具类
 * </p>
 * Create Time:2016年7月6日 下午12:46:03
 * 
 * @author Bladnir@outlook.com
 *         <p>
 *         History:
 *         </p>
 *         2016年7月6日 Bladnir Create<br>
 *         2016年7月31日 Bladnir 添加判断字符串是否相等方法<br>
 */
public class ValidateUtil {

	public static final String VALIDATE_EMPTY_STR = "can not be null";
	/**
	 * 构造方法
	 */
	private ValidateUtil() {

	}
	

	/**
	 * 判断集合是否为空
	 * 
	 * @param c
	 * @return
	 */
	public static boolean isEmpty(Collection<?> c) {
		return !isNotEmpty(c);
	}

	/**
	 * 判断集合是否为空
	 * 
	 * @param c
	 * @return
	 */
	public static boolean isNotEmpty(Collection<?> c) {
		return c != null && !c.isEmpty();
	}

	/**
	 * 根据正则表达式验证字符串
	 * 
	 * @param str
	 * @param rule
	 * @return
	 */
	public static boolean validateString(String str, String rule) {

		if (StringUtil.isNotNull(str) && StringUtil.isNotNull(rule)) {
			// 将正则表达式编译为Pattern
			Pattern p = Pattern.compile(rule);
			// 创建匹配器
			Matcher m = p.matcher(str);

			return m.matches();
		} else {
			return false;
		}

	}

	/**
	 * 检验参数是否为null 如果为null则抛出异常
	 * 
	 * @param object
	 * @param value
	 * @throws ParameterIllegalException
	 */
	public static void isNull(Object object, String value) throws LoraCoreException {
		if (StringUtil.isNull(object)) {
			throw new LoraCoreException("["+value+"]"+VALIDATE_EMPTY_STR);
		}
	}

	/**
	 * 判断两个字符串是否相等
	 * 
	 * @param value1
	 * @param value2
	 * @return
	 */
	public static boolean isEqual(String value1, String value2) {
		if (StringUtil.isNull(value1) || StringUtil.isNull(value2)) {
			return false;
		} else {
			return value1.equals(value2);
		}
	}

}
